from plyer import notification
import pyttsx3 as pts
import winsound
from datetime import datetime

_pt = pts.init()


def contains_keyword(input_string: str, keywords: list) -> bool:
    """
    判断一个字符串是否包含数组中的某个关键词
    :param input_string: 字符串
    :param keywords: 关键词数组
    :return:
    """
    for keyword in keywords:
        if keyword in input_string:
            return True
    return False


def send_notification(msg: str, title: str = "tip", timeout: int = 10):
    """
    发送系统通知
    :param msg: 内容
    :param title: 标题
    :param timeout: 持续时间
    :return:
    """
    notification.notify(
        title=title,
        message=msg,
        app_icon=None,
        timeout=timeout,
    )


def voice(text: str):
    """
    语音通知
    :param text: 内容
    :return:
    """
    _pt.say(text)
    _pt.runAndWait()


def beer(time: int = 1000, hz: int = 440):
    """
    系统蜂鸣声
    :param time: 持续时间
    :param hz:  hz
    :return:
    """
    duration = time  # 持续时间
    freq = hz  # Hz
    winsound.Beep(freq, duration)


def format_timestamp(timestamp: int, format_string: str = '%Y-%m-%d %H:%M:%S'):
    """
    将时间戳格式化为指定的日期时间字符串格式。

    参数：
    - timestamp: 输入的时间戳（以秒为单位）
    - format_string: 格式化字符串，默认为 '%Y-%m-%d %H:%M:%S'

    返回：
    格式化后的日期时间字符串
    """
    dt_object = datetime.fromtimestamp(timestamp)
    formatted_date = dt_object.strftime(format_string)
    return formatted_date
